import java.util.Stack;

//  232. 用栈实现队列
//      两个栈实现队列
//思路：
//1、入队的时候，统一入到第一个栈
//2、出队的时候，统一出第2个栈里面的元素 如果第2个栈为空 那么把第一 个栈里面所有的元素，全部导过来。然后再出栈顶元素。
public class MyQueueOJ {
    private Stack<Integer> stack1;
    private Stack<Integer> stack2;
    public MyQueueOJ() {
        stack1 = new Stack<>();
        stack2 = new Stack<>();
    }
//  添加元素到第一个栈
    public void push(int x) {
        stack1.push(x);
    }
//  出栈（从第二个栈里出）
    public int pop() {
        if (empty()) return -1;
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());//将第一个栈内元素 移到第二个栈内
            }
        }
        return stack2.pop();//出栈
    }
//  查看栈顶元素
    public int peek() {
        if (empty()){
            return -1;
        }
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }
        }
        return stack2.peek();
    }
//  判断两个栈是否都为空
    public boolean empty() {
        return stack1.isEmpty() && stack2.isEmpty();
    }
}
